Jan 28 2018 / 22:53:25
プログラミング > 豆知識 >
Keyword:

[Heroku] node.jsで外部・自作プログラムを実行する

Herokuで外部プログラムや自作プログラムを実行できればもう何でもできる()のでそれをやってみて何故か手こずったので最終的に成功したやり方を書いておく。

node.jsでOSコマンドを実行するにはchild_processというモジュールを使う。今回の場合はchild_processの中のexecFileという関数を使うとうまく行った。他の関数は公式リファレンスで見ることができる。

あとはこれを使ってインストールされている(PATHの通っている)OSのコマンドは以下のように実行することができる。

const { execFile } = require('child_process'); const child = execFile('node', ['--version'], (error, stdout, stderr) => { if (error) { throw error; } console.log(stdout); });

躓いたというのは自作プログラム(今回はCでHello worldを作ってその実行ファイルa.outをindex.jsと同ディレクトリに置いておいた)の実行。これはフルパスで指定する必要があるらしい。Herokuの場合はファイルは/app/上に置かれるのでコマンド"/app/a.out"を実行すると無事「Hello world」がブラウザ上に表示された。

これで何でもできるね!